#pragma once

#include "Camera.h"
#include "AreaMap.h"
#include "vec3.h"

// class to handle traditional input
class KMController
{
protected:
	Camera* cam;
	AreaMap* map;
	bool* keyStates;
	bool* keySpecialStates;

public:
	KMController							(AreaMap *map, float xRot, float yRot, float xPos, float yPos, float zPos);
	~KMController							(void);

	// calls to display and update
	void update								(void);
	void rotate								(void);
	void translate							(void);

	// camera alteration calls
	void applyRotate						(float delta, int axis);
	void applyRotate						(vec3 * delta);
	void applyTrans							(float delta, int axis);
	void applyTrans							(vec3* delta);

	// keyboard functions
	void keyReleased						(unsigned char key, int x, int y);
	void keyPressed							(unsigned char key, int x, int y);
	void specialKeyReleased					(int key, int x, int y);
	void specialKeyPressed					(int key, int x, int y);
	void keyOperations						(void);

	// mouse functions
	void mouseButtonEvent					(int button, int state, int x, int y);
	void mousePassiveMovement				(int x, int y);
	void mouseActiveMovement				(int x, int y);
	void mouseFocusChange					(int state);


};